Utilizzo di Depictor per visualizzare i gruppi di assi
Per questo progetto è necessario anche il CODESYS Depictor componente aggiuntivo con una licenza valida.
L'applicazione SoftMotion è costituita da quattro azionamenti rotativi configurati come gruppo di assi. I primi tre assi spostano il TCP nel piano X/Y e il quarto asse nel piano Z.
L'esempio mostra come è possibile utilizzare Depictor con la configurazione cinematica Kin_Scara3_Z. È possibile personalizzare la stessa procedura anche per altre configurazioni cinematiche.

Creazione del progetto standard
Crea un progetto standard con il CODESYS SoftMotion Win controller e il linguaggio di programmazione ST.
Aggiungi un gestore di libreria nel POU Visualizza.
Apri il Gestore della libreria e aggiungi le librerie
SM3_Depictor
eDepictorBase
.
Aggiunta e parametrizzazione degli assi
Inserisci quattro assi virtuali sotto l'oggetto Pool di assi generali SoftMotion e denominare gli assi Drive1...Drive4.
Parametrizzare gli assi Drive1, Drive2, Drive3 e Drive4 come tipo di asse finito con finecorsa software da -180 gradi a 180 gradi.
Editor di configurazione:
Per ulteriori informazioni, vedere: Unità virtuale
Configurazione dei gruppi di assi
Aggiungi un gruppo di assi "KinScara" sotto l'applicazione. Per fare ciò, fare clic su
.Nel configuratore, fare clic su Seleziona cinematica. Seleziona il TRAFO.Kin_Scara3_Z cinematica.
Definire i parametri come segue:
dArmLength1, dArmLength2, dArmLength3: 500
dOffsetA1, dOffsetA2, dOffsetA3, dOffsetZ: 0
Ordina gli assi come segue:
A1: Drive1
la2: Drive2
LA3: Drive3
Z: Drive4
Nota: è possibile trascinare gli assi direttamente nel campo di immissione.
Per ulteriori informazioni, vedere: Cinematica
Creazione del programma del controller
Nel
PLC_PRG
programma, dichiarare le istanze diMC_Power
blocco funzione per tutti gli azionamenti. Creare unistate
variabile per il diagramma di stato.VAR Power_Drive1, Power_Drive2, Power_Drive3, Power_Drive4 : MC_Power; istate: INT; END_VAR
Definire un diagramma di stato nell'implementazione.
CASE istate OF 0: 1: 2: END_CASE
Attiva tutte le unità in stato
0
.0: Power_Drive1(Axis:=Drive1, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive2(Axis:=Drive2, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive3(Axis:=Drive3, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive4(Axis:=Drive4, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); IF Power_Drive1.Status AND Power_Drive2.Status AND Power_Drive3.Status AND Power_Drive4.Status THEN istate:=istate+1; END_IF
Quando gli assi sono attivati, abilitare il gruppo di assi (passaggio da "disattivato" a "standby").
VAR GroupEnable:MC_GroupEnable; END_VAR 1: GroupEnable(AxisGroup:=KinScara, Execute:=TRUE); IF GroupEnable.Done THEN istate:=istate+1; END_IF
Dichiarare e inizializzare una variabile per salvare il valore impostato nelle coordinate macchina. Dichiara due istanze di tipo
SMC_POS_REF
per rappresentare il TCP in coordinate cartesiane e assi.VAR Frame: MC_COORD_REF:=(X:=-120, Y:=-25); // This variable stores the cartesian position & orientation of the TCP Pos_Cart: SMC_POS_REF; // This variable represents the position of the TCP in cartesian coordinates coordinates Pos_Axis: SMC_POS_REF := (a := axispos);// This variable represents the position of the TCP in Axis coordinates END_VAR VAR CONSTANT axispos: TRAFO.AXISPOS_REF := (a0 := 0, a1 := 100, a2:=60); END_VAR 2: Pos_Cart.c:= Frame; // To represent the TCP in cartesian coordinates;
Dichiarare un'istanza di
MC_MoveDirectAbsolute
per spostare il robot SCARA alle coordinate specificate.VAR MoveAbs:MC_MoveDirectAbsolute; // Moves the TCP to the defined coordinates END_VAR 2: MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Axis,CoordSystem:=SMC_COORD_SYSTEM.ACS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined Axis coordinates //MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Cart,CoordSystem:=SMC_COORD_SYSTEM.MCS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined cartesian coordinates IF MoveAbs.Done THEN MoveAbs(AxisGroup:=KinScara, Execute:=FALSE); // Waits for the next new coordinates istate:=2; END_IF
Dichiarare una variabile di tipo
SMC_GroupReadSetPosition
per leggere il valore corrente del robot in coordinate cartesiane e coordinate assi.VAR Car_pos, Axis_pos :SMC_GroupReadSetPosition; //to read the current axis values END_VAR 2: Car_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.MCS, Enable:=TRUE); // to read the current position in cartesian coordinates Axis_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.ACS, Enable:=TRUE); // to read the current axis values
L'intero programma PLC_PRG
Confronta il tuo programma e aggiungi le parti di programma mancanti.
Dichiarazione
PROGRAM PLC_PRG VAR Power_Drive1, Power_Drive2, Power_Drive3, Power_Drive4 :MC_Power; istate: INT; GroupEnable:MC_GroupEnable; Frame:MC_COORD_REF:=(X:=-120, Y:=-25); // This variable stores the cartesian position & orientation of the TCP Pos_Cart:SMC_POS_REF; // This variable represents the position of the TCP in cartesian coordinates coordinates Pos_Axis:SMC_POS_REF := (a := axispos);// This variable represents the position of the TCP in Axis coordinates MoveAbs:MC_MoveDirectAbsolute; // Moves the TCP to the defined coordinates (PTP) Car_pos,Axis_pos :SMC_GroupReadSetPosition; //to read the current position of the TCP in Cartesian and Axis Coordinates and display it on the visu scara_Config:trafo.Kin_Scara3_Z_Config; // To set the configuration of the SCARA_3_Z kin_Config:SMC_SetKinConfiguration; // To set the defined configuration of SCARA_3_Z to the axis group used nPeriod:DINT:=0; // SCARA_3_Z Period Xelbow:BOOL:=TRUE; END_VAR VAR CONSTANT axispos : TRAFO.AXISPOS_REF := (a0 := 0, a1 := 100, a2:=60); END_VAR
Implementazione
CASE istate OF 0: Power_Drive1(Axis:=Drive1, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive2(Axis:=Drive2, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive3(Axis:=Drive3, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive4(Axis:=Drive4, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); IF Power_Drive1.Status AND Power_Drive2.Status AND Power_Drive3.Status AND Power_Drive4.Status THEN istate:=istate+1; END_IF 1: GroupEnable(AxisGroup:=KinScara, Execute:=TRUE); IF GroupEnable.Done THEN istate:=istate+1; END_IF 2: scara_Config(xElbowRight:=Xelbow, nPeriodA3:=nPeriod); kin_Config(AxisGroup:=KinScara,ConfigData:=scara_Config.Config, Execute:=TRUE); Pos_Cart.c:=Frame; // To represent the TCP in cartesian coordinates Car_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.MCS, Enable:=TRUE); // read the current position in cartesian coordinates Axis_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.ACS, Enable:=TRUE); // read the current position in Axis coordinates MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Axis,CoordSystem:=SMC_COORD_SYSTEM.ACS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined axis coordinates //MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Cart,CoordSystem:=SMC_COORD_SYSTEM.MCS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined cartesian coordinates IF MoveAbs.Done THEN MoveAbs(AxisGroup:=KinScara, Execute:=FALSE); // Waits for the next new coordinates istate:=2; END_IF END_CASE
Creazione di un programma Depictor
Aggiungere una nuova POU "Depic" di tipo "Programma" sotto l'applicazione. Per fare ciò, fare clic su
.Dichiarare una variabile di tipo
SM3_Depictor.SMC_R_Scara3_Z_Data
. Dichiarare una variabileLrSize
di tipoLREAL
e inizializzare la variabile con il valore di 100.VAR ScaraTrafo : SM3_Depictor.SMC_R_Scara3_Z_Data; LrSize:LREAL:=100; END_VAR
Inserire una chiamata al blocco funzione nell'implementazione.
ScaraTrafo(AxisGroup:=KinScara, trf:=KinScara.trafo);
Aggiungi il POU "Depic" al Compito principale.
Configurazione del visualizzatore
Aggiungi un oggetto "Depictor" sotto l'applicazione. Per fare ciò, fare clic su
.Fare doppio clic sull'oggetto.
Seleziona il Posa elemento nell'albero di rappresentazione.
Clic
.Il Scatola l'elemento viene aggiunto sotto la posa.
Seleziona il Rif. raffigurante opzione nelle proprietà dell'elemento.
Clicca il
pulsante.
Seleziona il SMC_R_Depictor_Scara3_Z oggetto dal
SM3_Depictor
biblioteca.Definire le variabili di interfaccia come segue:
fb: Depic.ScaraTrafo
lrZ_: Drive1.fSetPosition
lrZmin: 10
lrZmax: -50
lrSize: Depic.LrSize
xShowPlane: 0
Creazione di visualizzazioni
Creare una schermata di visualizzazione in cui è possibile visualizzare e modificare le coordinate cartesiane e le coordinate degli assi.

Aggiungi un oggetto "Visualizzazione" sotto l'applicazione. Per fare ciò, fare clic su
.Apri la visualizzazione nell'editor.
Inserisci a Rettangolo elemento di visualizzazione (1).
Modificare le proprietà dell'elemento.
: %S
:PLC_PRG.Car_pos.Position.c.X
Tipo di ingresso: VisuDialogs.Tastierino numerico
Usa un'altra variabile:
PLC_PRG.Frame.X
Inserisci l'altro Scatola elementi di visualizzazione.
Modificare le proprietà degli elementi (2) e (3).
: %S
:PLC_PRG.Car_pos.Position.c.Y
oPLC_PRG.Car_pos.Position.c.Z
Tipo di ingresso: VisuDialogs.Tastierino numerico
Usa un'altra variabile:
PLC_PRG.Frame.Y
ePLC_PRG.Frame.Z
Modificare le proprietà degli elementi (4), (5) e (6).
: %S
:PLC_PRG.Frame.A
oPLC_PRG.Frame.B
oPLC_PRG.Frame.C
Modificare le proprietà degli elementi (7), (8), (9) e (10).
: %S
:PLC_PRG.Axis_pos.Position.a.a0
oPLC_PRG.Axis_pos.Position.a.a1
oPLC_PRG.Axis_pos.Position.a.a2
oPLC_PRG.Axis_pos.Position.a.a3
Tipo di ingresso: VisuDialogs.Tastierino numerico
Usa un'altra variabile:
PLC_PRG.Pos_Axis.a.a0
ePLC_PRG.Pos_Axis.a.a1
ePLC_PRG.Pos_Axis.a.a2
ePLC_PRG.Pos_Axis.a.a3
Etichetta gli elementi di visualizzazione con il Etichetta elemento.
Avvio e test del programma
È possibile modificare i valori degli assi nella visualizzazione del progetto. Se si commenta il comando di movimento attivo (MoveAbs...
, ...) nel programma PLC_PRG
e rimuovere i commenti del secondo comando di spostamento, quindi è possibile modificare le coordinate cartesiane.
Compila il progetto e scaricalo nel PLC.
Apri l'editor dell'oggetto Depictor nel tuo progetto.
Passare alla visualizzazione e modificare i valori degli assi oi valori cartesiani. Osserva il movimento del robot SCARA in Depictor.